<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    form {
      width: 500px;
      padding: 30px;
      border: 5px solid pink;
      border-radius: 15px;
      margin: 50px auto;
      display: flex;
      flex-direction: column;
    }

    form > label {
      height: 50px;
      position: relative;
    }

    form > label > span {
      color: red;
      position: absolute;
      left: 20px;
      bottom: 5px;

      display: none;
    }
  </style>
</head>
<body>

  <form>
    <label>
      用户名: <input autocomplete="off" type="text" class="name" name="username">
      <span class="err">请按照规则填写用户名</span>
    </label>
    <label>
      密码: <input autocomplete="off" type="text" name="password">
      <span>请按照规则填写密码</span>
    </label>
    <label>
      手机号: <input autocomplete="off" type="text" name="phone">
      <span>请按照规则填写手机号</span>
    </label>
    <button>注册</button>
  </form>
  <script>
      // 写正则验证每一个写的是否正确 
      // 用户名  字母数字下划线 第一位不能是数字 6-16位
      // 密码    字母数字下划线!@#$%& 6-30位
      // 手机号  +86 1


      // // 获取元素 
      // var nameInp = document.querySelector('.name');
      // var span = document.querySelector('.err');

      // // 验证
      // // blur  input 
      // var reg = /[a-zA-Z_]\w{5,15}/; //正则表达式
      // nameInp.onblur = function(){
      //     // 获取输入的内容
      //     // alert(this.value);
      //     if(reg.test(this.value)){
      //       span.style.display = 'none';
      //     }else{
      //       span.style.display = 'block';
      //     }
      // }

      // 按照上面写法  
      // 密码手机号 需要跟上面一样 再写一次 
      // 代码有重复  


      // 统一书写 

      // 正则不同 
      // 元素不同  
        // /^[a-zA-Z_]\w{5,15}$/
        // /^[a-zA-Z0-9_\$@#%\^!]{6,30}$/
        // /^(+86)?1[3-9]\d{9}$/

        // 获取元素 

        // 获取每个输入框 
        var inps = document.querySelectorAll('form input');
        inps.forEach(function(item){
            item.onblur = handler
        });
       var regs =  {
          'username':/^[a-zA-Z_]\w{5,15}$/,
          'password': /^[a-zA-Z0-9_\$@#%\^!]{6,30}$/,
          'phone':/^(\+86)?1[3-9]\d{9}$/
        }

        // 没每个输入框绑定事件 


      // 相同的代码放到这里 
      function handler(){
         // 获取输入的元素 
         var text = this.value;
        //  alert(text)
         // 拿到正则 
        // alert(this.name);
        var myreg = regs[this.name];
         // 拿到指定的span元素
         var spanele = this.nextElementSibling;
         if(myreg.test(text)){
            spanele.style.display = 'none';
         }
         else{
            spanele.style.display = 'block';
         }
         

      }

  </script>

</body>

</html>
